/**
 * 自动校正数字输入框
 * @param inputValue 输入值
 * @param bitsAfterDot 小数点后最多允许的位数，默认2位
 * @param allowNegative 是否允许输入负数，默认否
 * 
 * 使用时@change Number(value) 
 */
export default function autoFixedDicimal(inputValue, bitsAfterDot=2, allowNegative=false) {
	// 处理参数的默认值
	if (bitsAfterDot == null || bitsAfterDot == undefined)
		bitsAfterDot = 2;
	allowNegative = allowNegative || false;
	// 自动校正输入的数字decimal
	let value = inputValue;
		//没有小数点
		if(bitsAfterDot===0){
			value = inputValue.replace(/\./g, '')
		}
	// 先处理符号问题（负数）
	let mark = "";
	if (/^-/.test(value)) {
		mark = "-";
	}
	// 第一位不能是0
	if(value.length>1){
		value=value[0]==0?value.slice(1):value
	}
	// 如果输入非数字，则替换为''
	value = value.replace(/[^\d\.]/g, '');
	// 必须保证开头为数字而不是小数点.
	value = value.replace(/^\./g, '');
	// 保证小数点.最多出现一次
	value = value.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.');
	// 只能输入两位小数
	let reg = new RegExp(`^(\\-)*(\\d+)\\.([\\d]{0,${bitsAfterDot}}).*$`);
	value = value.replace(reg, '$1$2.$3');
	value = allowNegative ? mark + value : value;
	// Number(value) 
	return value;
}